#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Flask错误处理器
统一处理应用程序错误
"""

from flask import jsonify
import logging
from utils.response_helper import error_response

logger = logging.getLogger(__name__)


def register_error_handlers(app):
    """注册错误处理器"""
    
    @app.errorhandler(400)
    def bad_request(error):
        """处理400错误"""
        logger.warning(f"Bad Request: {error}")
        return error_response('Bad Request', 400)
    
    @app.errorhandler(401)
    def unauthorized(error):
        """处理401错误"""
        logger.warning(f"Unauthorized: {error}")
        return error_response('Unauthorized', 401)
    
    @app.errorhandler(403)
    def forbidden(error):
        """处理403错误"""
        logger.warning(f"Forbidden: {error}")
        return error_response('Forbidden', 403)
    
    @app.errorhandler(404)
    def not_found(error):
        """处理404错误"""
        logger.info(f"Not Found: {error}")
        return error_response('Resource not found', 404)
    
    @app.errorhandler(405)
    def method_not_allowed(error):
        """处理405错误"""
        logger.warning(f"Method Not Allowed: {error}")
        return error_response('Method not allowed', 405)
    
    @app.errorhandler(422)
    def unprocessable_entity(error):
        """处理422错误"""
        logger.warning(f"Unprocessable Entity: {error}")
        return error_response('Unprocessable entity', 422)
    
    @app.errorhandler(500)
    def internal_server_error(error):
        """处理500错误"""
        logger.error(f"Internal Server Error: {error}")
        return error_response('Internal server error', 500)
    
    @app.errorhandler(Exception)
    def handle_exception(error):
        """处理未捕获的异常"""
        logger.error(f"Unhandled Exception: {error}", exc_info=True)
        return error_response('An unexpected error occurred', 500)